/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package be.hogent.designpatterns.billenkar;

import be.hogent.designpatterns.billenkar.commands.HoofdMenuCommand;
import be.hogent.designpatterns.billenkar.decorators.MetPlatteBand;
import be.hogent.designpatterns.billenkar.decorators.MetRoest;
import be.hogent.designpatterns.billenkar.iterator.Iterator;
import java.util.Scanner;

/**
 *
 * @author Jeroen
 */
public class Main {

   public static void main(String[] args) {
      //demonstratie decorator pattern
      Billenkar groteKarMetRoestEnPlatteBand = new MetRoest(new MetPlatteBand(new GroteBillenkar()));
//      System.out.println("Billenkar: " + groteKarMetRoestEnPlatteBand.getOmschrijving() + " - prijs:" + groteKarMetRoestEnPlatteBand.getPrijs());

//      System.out.println("Een kras toevoegen...");

      //demonstratie state pattern
      groteKarMetRoestEnPlatteBand.verhuur();
      groteKarMetRoestEnPlatteBand.zetInWinkel();
      groteKarMetRoestEnPlatteBand.zetInReparatie();
      BillenkarGarage garage = new BillenkarGarage();
      groteKarMetRoestEnPlatteBand = garage.repareerBillenkar(groteKarMetRoestEnPlatteBand);
      groteKarMetRoestEnPlatteBand.zetInWinkel();

      //demonstratie state pattern
      groteKarMetRoestEnPlatteBand.verhuur();
      groteKarMetRoestEnPlatteBand.zetInWinkel();
      groteKarMetRoestEnPlatteBand.zetInReparatie();
      groteKarMetRoestEnPlatteBand.zetInWinkel();

//      System.out.println("Billenkar na reparatie: " + groteKarMetRoestEnPlatteBand.getOmschrijving() + " - prijs:" + groteKarMetRoestEnPlatteBand.getPrijs());

      //paar billenkarren toevoegen aan verzameling.
      BillenkarVerzameling billenkarVerzameling = new BillenkarVerzameling();

      billenkarVerzameling.voegBillenkarToe(groteKarMetRoestEnPlatteBand);
      billenkarVerzameling.voegBillenkarToe(new MetRoest(new KleineBillenkar()));
      billenkarVerzameling.voegBillenkarToe(new KleineBillenkar());
      billenkarVerzameling.voegBillenkarToe(new GroteBillenkar());
      billenkarVerzameling.voegBillenkarToe(new GroteBillenkar());

      Scanner in = new Scanner(System.in);
      
      System.out.println("****************************************************");
      System.out.println("             VELOVERHURING BILLENKAR");
      System.out.println("****************************************************");
      System.out.println("");
      System.out.println("");
      System.out.println("Welkom bij Veloverhuring Billenkar, om verder te gaan klikt u op Enter.");
      in.nextLine();

      (new HoofdMenuCommand(billenkarVerzameling)).execute();

   }
}
